# 发邮件任务
from django.core.mail import send_mail
from django.conf import settings

from celery_tasks.main import celery_app


# bind=True ：将任务对象作为"第一个参数"传入到任务函数中
@celery_app.task(name='send_verify_email', bind=True)
def send_verify_email(self, to_email, verify_url):
    """发送邮件任务
    to_email：收件人
    verify_url：邮箱验证链接
    普通字符串(text/plain)：阿拉十多年实例即可承诺书jdbcsjc1234
    HTML字符串(text/html)：<div>hehe</div>
    JSON字符串(text/json)："{'name': 'zxc'}"
    XML字符串(text/xml)：<test>测试</test>
    # send_mail('邮件标题', '邮件正文：普通字符串', '发件人', ['收件人列表'], html_message='邮件正文：HTML类型')
    """
    subject = '美多商城邮箱验证'
    html_message = '<p>尊敬的用户您好！</p>' \
                   '<p>感谢您使用美多商城。</p>' \
                   '<p>您的邮箱为：%s 。请点击此链接激活您的邮箱：</p>' \
                   '<p><a href="%s">%s<a></p>' % (to_email, verify_url, verify_url)
    try:
        send_mail(subject, '', settings.EMAIL_FROM, [to_email], html_message=html_message)
    except Exception as e:
        # self：任务对象
        # exc：捕获的异常
        # countdown：自动重试的时间间隔
        # max_retries：自动重试次数的上限
        # 捕获到异常，每隔两秒重试一次，最多重试三次
        raise self.retry(exc=e, countdown=2, max_retries=3)
